﻿/*!
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

using System;

namespace Pittypat
{
    /// <summary>
    /// 表示功能参数列表实体类的抽象基类。
    /// </summary>
    /// <remarks>
    /// 通常 Pittypat 自动创建该类的子类，并自动提供实现，不需要开发者自己编写代码。
    /// </remarks>
    public abstract class FunctionArgs : Model
    {
        /// <summary>
        /// 初始化 <see cref="FunctionArgs"/> 类的新实例。
        /// </summary>
        protected FunctionArgs()
        {
        }

        /// <summary>
        /// 获取或者设置指定名称的参数值。
        /// </summary>
        /// <param name="name">参数名称，不区分大小写。</param>
        /// <returns>目标名称的参数值。如果参数不存在，则返回 null。</returns>
        /// <exception cref="ArgumentException">设置参数值时发现参数不存在。</exception>
        /// <remarks>
        /// 继承类实现该索引器能够避免使用反射访问当前对象的属性值，以提高运行效率。Pittypat 自动为自动生成的功能实体类提供对该索引器的实现。
        /// </remarks>
        public abstract object this[string name] { get; set; }
    }
}
